﻿using System;

namespace Wisdom.Core
{
    /// <summary>
    /// 描述：若通过Castle动态代理机制代理接口 ,接口实现基类需要被装饰
    /// </summary>
    /// <remarks>
    /// 通过在类上放置特性，Castle动态代理框架可以实现为一个接口创建一个代理类
    /// </remarks>
    [AttributeUsage(AttributeTargets.Class, AllowMultiple=false, Inherited=false)]
    public class BaseTypeForInterfaceProxyAttribute : Attribute
    {
        #region Public Properties
        /// <summary>
        /// 获取或设置基类类型
        /// </summary>
        public Type BaseType { get; set; }
        #endregion

        #region Ctor
        /// <summary>
        /// 构造函数：初始化一个 <c>BaseTypeForInterfaceProxyAttribute</c> 类实例.
        /// </summary>
        /// <param name="baseType">
        /// 类型应为产生的动态代理对象获得</param>
        public BaseTypeForInterfaceProxyAttribute(Type baseType)
        {
            this.BaseType = baseType;
        }
        #endregion
    }
}
